void main() {
  // 测试分数检测逻辑
  testFractionDetection();
}

void testFractionDetection() {
  print('开始测试分数检测逻辑...');
  
  // 测试用例
  List<String> testCases = [
    '(1/2)',
    '（1/2）',
    '((1+2)/3)',
    '(现期量/(1 + r))',
    '选项A: (5/4)',
    '解析: 首先计算 (1/2) = 0.5',
    '这是普通文本',
    'A. (3/4)',
    '正确答案是 (2/3)',
  ];
  
  for (String testCase in testCases) {
    bool result = _containsBracketFraction(testCase);
    print('测试: "$testCase" -> $result');
  }
}

bool _containsBracketFraction(String text) {
  // 匹配各种分数格式，包括中文、字母和特殊格式
  final bracketFractionRegex = RegExp(
    // （1/2）格式 - 简单数字分数
    r'[\(（][\s]*\d+[\s]*/[\s]*\d+[\s]*[\)）]|' 
    // ((1+2)/2) 格式 - 分子带括号
    r'[\(（][\s]*\([\s]*\d+\+\d+[\s]*\)[\s]*/[\s]*\d+[\s]*[\)）]|' 
    // (2/(1+2)) 格式 - 分母带括号
    r'[\(（][\s]*\d+[\s]*/[\s]*\([\s]*\d+\+\d+[\s]*\)[\s]*[\)）]|' 
    // ((1+2)/(1+2)) 格式 - 分子分母都带括号
    r'[\(（][\s]*\([\s]*\d+\+\d+[\s]*\)[\s]*/[\s]*\([\s]*\d+\+\d+[\s]*\)[\s]*[\)）]|'
    // (现期量/(1 + r)) 格式 - 分母带括号，支持中文和字母
    r'[\(（][\s]*[^\(\)（）/]+[\s]*/[\s]*\([\s]*[^\(\)（）/]+[\s]*\)[\s]*[\)）]|'
    // ((1 + r)/现期量) 格式 - 分子带括号，支持中文和字母
    r'[\(（][\s]*\([\s]*[^\(\)（）/]+[\s]*\)[\s]*/[\s]*[^\(\)（）/]+[\s]*[\)）]|'
    // (总增长量/n年) 格式 - 支持中文和字母的简单分数
    r'[\(（][\s]*[^\(\)（）/]+[\s]*/[\s]*[^\(\)（）/]+[\s]*[\)）]'
  );
  return bracketFractionRegex.hasMatch(text);
}